package cn.com.surker.sale.service;

import cn.com.surker.sale.entity.SaleContractStrengthPrice;
import cn.com.surker.spring.RestResultDto;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;
import java.util.Map;

/**
 * @Author lucky
 * @create 2024年07月09 15:32
 * @desc
 */
public interface SaleContractStrengthPriceBaseService {

    /**
     * 根据生效时间查询标号
     * @param contractId
     * @param takeTime
     * @return
     */
    List<SaleContractStrengthPrice> findByTakeTime(Long contractId, String takeTime);

    /**
     * 查询销售合同砼单价信息
     * @param contractId
     * @return
     */
    Map<String, List<SaleContractStrengthPrice>> findByContract(Long contractId);

    /**
     * 新增砼单价信息
     * @param orgId
     * @param contractId 合同ID
     * @param strengthId 砼标号
     * @param price 单价
     * @param takeTime 生效时间
     * @param remark
     * @param creator
     * @return
     */
    Integer saveStrength(Long orgId, Long contractId, Long strengthId, Double price, Double taxPrice, String takeTime, String remark,
                 String creator);

    /**
     *
     * @param id
     * @param strengthId 砼标号
     * @param price 单价
     * @param takeTime 生效时间
     * @param remark
     * @param creator
     * @return
     */
    Integer updateStrength(Long id, Long strengthId, Double price, Double taxPrice, String takeTime, String remark,
                   String creator);

    /**
     * 禁用合同
     * @param id
     * @param status
     * @return
     */
    Integer updateStatus(Long id, Integer status, String creator);

    /**
     *
     * @param strengthList
     * @param contractId
     * @param creator
     * @return
     */
    Integer saveBatchStrength(List<SaleContractStrengthPrice> strengthList, Long orgId,
                         Long contractId, String creator);

    /**
     * 信息价保存信息
     * @param strengthList
     * @param takeTime
     * @param orgId
     * @param contractId
     * @param creator
     * @return
     */
    Integer saveBatchStrengthV1(List<SaleContractStrengthPrice> strengthList, String takeTime, Long orgId,
                              Long contractId, String creator);

    /**
     * 生成标号价格
     * @param contractId 合同ID
     * @param strengthId 基础标号ID
     * @param specialIds 合同特性ID 可多个(逗号隔开)
     * @return
     */
    RestResultDto generatePrice(Long contractId, Long strengthId, String specialIds);

    /**
     * 生成标号价格
     * @param contractId 合同ID
     * @param strengthId 基础标号ID
     * @param special 特性
     * @return
     */
    Double generatePriceV1(Long contractId, Long strengthId, String special);

	/**
	 * 查询合同中当前执行的价格最高的砼标号
	 *
	 * @param conId
	 * @return
	 */
	SaleContractStrengthPrice findMaxPrice(Long conId);

    /**
     * 查询合同中是否存在该标号
     * @param contractId
     * @param strengthId
     * @return
     */
    SaleContractStrengthPrice findExistPrice(Long contractId, Long strengthId);
}
